package com.itheima.features.stream;

import java.util.stream.Stream;

/**
 * Jdk1.9以后再Stream流中所提供的一个方法：  public static<T> Stream<T> ofNullable(T t)   ； 为了防止空指针异常
 */
public class StreamDemo01 {

    public static void main(String[] args) {

        // 对数组去使用stream流，我们可以调用stream流中的静态的of方法进行获得; 如果我们构建的流对象中存在多个元素，那么java是允许这个元素存在null值的；
        Stream<Integer> stream = Stream.of(23, 45, 67, null);
        stream.forEach( s -> System.out.println(s));

        System.out.println("-------------------------------------------------");

        // public static<T> Stream<T> of(T t): 使用该方法可以去构建一个只包含一个元素的流对象 ; 这个元素不能为null,如果为null了，那么就会抛出NullPointerException
        /**
         * 有时我们在构建这个流对象的时候，我们为这个流对象所传递的这个元素我们并不清楚其值是否null，那么使用这种方式构建流对象，就会存在一定的风险。
         * 怎么办呢？
         * 1. 在构建之间对元素进行判空操作
         * 2. 使用Stream流中的ofNullable方法去构建流对象
         */
        String str = "张三" ;
        if(str != null) {
            Stream<String> integerStream = Stream.of(str);
            integerStream.forEach(s -> System.out.println(s));
        }

        System.out.println("-------------------------------------------------");

        // public static<T> Stream<T> ofNullable(T t)   ； 为了防止空指针异常
        Stream<String> stringStream = Stream.ofNullable(str);
        stringStream.forEach( s -> System.out.println(s) );

    }

}
